1) Field of the Invention
The present invention relates to computer systems in general and in particular to devices, called adapter cards or add-in boards, for coupling a plurality of computer systems or for coupling devices to a computer system.
2) Background of the Invention
The use of a communications interface or input/output bus for coupling separate devices, such as processors, memories and peripherals, of a computer system is well known in the prior art. Computer systems are not only used to perform several stand alone tasks but also to exchange information between one another. In order to exchange information, the computer systems are connected into a computer network. The conventional computer network includes a communications medium and a plurality of computer systems connected to the communications medium. Usually, an add-in board couples the bus of the computer system to the communications medium. To make their computers more attractive to users, most manufacturers have tried to standardize the design of their computer buses. Standardized buses such as ISA, EISA, Micro Channel.TM., etc., are well known in the prior art.
The Peripheral Component Interconnect (PCI) bus is another one of the standardized buses. It is a high performance 32 or 64 bit bus with multiplexed address, control and data lines. The PCI bus is intended for use as an interconnect mechanism between highly integrated peripheral components, peripheral add-in boards and processor/memory subsystems. The specification for the PCI bus is set forth in the document PCI Local Bus Specification, Production Version Revision 2.0, Apr. 30, 1993. The manual is prepared and maintained by the PCI Special Interest Group (SIG). The PCI-SIG is an organization which is open for membership to all companies in the computer industry. It is believed that the PCI bus will emerge as the predominant expansion bus for add-in boards in high performance personal computers (PCIs), workstations, servers, etc.
Among the many features which the PCI specification provides is the use of an "Expansion ROM." The Expansion ROM is a read-only memory device residing on a PCI add-in board. The Expansion ROM contains code which is executed by the PCI host processor to provide initialization and system boot functions for the PCI add-in board.
The typical way in which the Expansion ROM is used is architectured in the above-referenced PCI local bus specification which is incorporated herein by reference. In the typical situation during booting of the PCI computer system, an architectured process is practiced between the PCI processor and the add-in board. As a consequence, the contents of the Expansion ROM on the add-in board is transferred into the memory of the PCI computer system. This is often referred to as the contents of the Expansion ROM being "shadowed" in the PCI computer memory. The PCI system software then executes the code from the shadowed copy of Expansion ROM in its memory. Once execution of the Expansion ROM code is complete, control is returned to the system configuration software and the PCI computer system continues with the boot process.
After this sequence (i.e., Expansion ROM code transfer and execution) is complete, the shadowed copy of the Expansion ROM remains in the host computer system's main memory. The process provides no mechanism for releasing the memory so it can be used by other applications. In today's PCI computer systems, the memory that is used to shadow the Expansion ROM is typically located in the base 1 megabyte of memory that is very constrained for DOS/Windows applications. Even if a small amount of this area is consumed, it can prevent some applications from being able to run on the computer system.
The code that is implemented in Expansion ROMs is often needed only in specialized applications. Even if the function is not needed, there is no architectured method of preventing the shadowed Expansion ROM code from occupying a portion of the computer system's main memory. The Expansion ROM must exist on all add-in boards to be available in the specialized applications that need it. A solution is needed which allows the Expansion ROM to be disabled in environments where it is not needed to prevent the computer system's main memory from being needlessly consumed by the shadowed copy of the Expansion ROM.